package jdk7.handlerexception;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * Description: jdk1.7新特性：捕获多种异常（CatchMoreExceptions）
 * 在Java SE7里，一个catch可以捕获多个异常，这样可以减少重复代码。每个异常之间用 | 隔开。
 * 用一个catch处理多个异常，比用多个catch每个处理一个异常生成的字节码要更小更高效。
 * 
 * 个人认为：一般有用，减少了代码工作量
 * @author Kwum
 * @date 2017年6月26日 下午4:26:43
 * @version 1.0
 */

public class CatchMoreExceptionsRun {
    
    public static void main(String args[]){
        first();
        second();
    }

    //Java SE7
    //注意，如果一个catch处理了多个异常，那么这个catch的参数默认就是final的，你不能在catch块里修改它的值。 
    @SuppressWarnings("null")
    public static void first(){
        try {
            BufferedReader reader = new BufferedReader(new FileReader(""));
            Connection conn = null;
            Statement stmt = conn.createStatement();
            reader.close();
            stmt.close();
            conn.close();
        } catch (IOException | SQLException e) {
            //捕获多个异常，e就是final类型的
            e.printStackTrace();
        }
    }
    
    //Java SE6
    @SuppressWarnings("null")
    public static void second() {
        try { BufferedReader reader = new BufferedReader(new FileReader(""));
            Connection conn = null;
            Statement stmt = conn.createStatement();
            reader.close();
            stmt.close();
            conn.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    } 
}